package auth

import (
	"github.com/gin-gonic/gin"
	"krm_backend/config"
	"krm_backend/utils/jwtutil"
	"krm_backend/utils/logs"
)

type UserInfo struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

// Login 实现登录
func Login(r *gin.Context) {
	userInfo := UserInfo{}
	returnData := config.NewReturnData()
	if err := r.ShouldBindJSON(&userInfo); err != nil {
		returnData.Status = 401
		returnData.Message = err.Error()
		r.JSON(200, returnData)
		return
	}
	logs.Debug(map[string]interface{}{"用户名": userInfo.Username, "密码": userInfo.Password}, "开始验证登录信息")
	logs.Debug(map[string]interface{}{"配置用户名": config.Username, "配置密码": config.Password}, "配置的秘钥信息，待删除")

	// 验证用户名和密码
	if userInfo.Username == config.Username && userInfo.Password == config.Password {
		ss, err := jwtutil.GenToken(userInfo.Username)
		if err != nil {
			logs.Error(map[string]interface{}{"用户名": userInfo.Username, "错误信息": err.Error()}, "用户名密码正确，生成token失败")
			returnData.Status = 401
			returnData.Message = err.Error()
			r.JSON(200, returnData)
			return
		}
		// token正确，返回
		logs.Info(map[string]interface{}{"用户名": userInfo.Username}, "登录成功")
		returnData.Status = 200
		returnData.Message = "登录成功"
		returnData.Data["token"] = ss
		r.JSON(200, returnData)
		return
	} else {
		// 用户名密码错误
		returnData.Status = 401
		returnData.Message = "用户名密码错误"
		r.JSON(200, returnData)
		return
	}
}

// Logout 登出
func Logout(r *gin.Context) {
	returnData := config.NewReturnData()
	returnData.Status = 200
	returnData.Message = "登出成功"
	r.JSON(200, returnData)
	logs.Debug(nil, "用户已退出")
}
